#ifndef MAIN_H_INCLUDED
#define MAIN_H_INCLUDED

/* dotyczy printVectorsNEW - maski print-a */
#define MSK_P	1		/**< Maska funkcji WypiszWektory. Dodanie jej jako argumentu funkcji wypisuje wektor profitow \f$ p \f$. @see WypiszWektory */
#define MSK_P_	2		/**< Maska funkcji WypiszWektory. Dodanie jej jako argumentu funkcji wypisuje wektor profitow zredukowanych \f$ \overline{p} \f$. @see WypiszWektory */
#define MSK_W	4		/**< Maska funkcji WypiszWektory. Dodanie jej jako argumentu funkcji wypisuje wektor wag \f$ w \f$. @see WypiszWektory */
#define MSK_V	8		/**< Maska funkcji WypiszWektory. Dodanie jej jako argumentu funkcji wypisuje wektor dochodowosci \f$ v \f$. @see WypiszWektory */
#define MSK_V_	16		/**< Maska funkcji WypiszWektory. Dodanie jej jako argumentu funkcji wypisuje wektor dochodowosci zredukowanych \f$ \overline{v} \f$. @see WypiszWektory */
#define MSK_XR 	128		/**< Maska funkcji WypiszWektory. Dodanie jej jako argumentu funkcji wypisuje rozwiazanie zrelaksowane \f$ x_r \f$. @see WypiszWektory*/
#define MSK_INDEX 512	/**< Maska indeksow - i(pierwotne) oraz k(kolejnosci dochodow */
#define MSK_TYTUL 1024	/**< Maska naglowka */
#define MSK_BASIC 13	/**< Maska */
#define MSK_ALL	1023	/**< Maska */
#define SORT_I	1		/**< Maska */
#define SORT_K	2		/**< Maska */


void Sortuj();
void Korekta();
void AlokujPamiec(short);
void InicjujDane();
void ZwolnijPamiec();
double C(double);
void GLPK_prob_d();

const char * KP01_D="param N;\nparam p {i in 1..N};\nparam w {i in 1..N};\nparam c;\nparam K;\n\nvar x {i in 1..N} >= 0;\nvar b {i in 1..N} >= 0, integer;\n\ns.t. ogr_1 { i in 1..N}:\n\tx[i] <= b[i];\n\ns.t. binar { i in 1..N}:\n\tb[i] <= 1;\n\ns.t. pojemnosc:\n\tsum { i in 1..N} x[i]*w[i] <= c;\n\ns.t. liczba_elementow:\n\tsum {i in 1..N} b[i] <= K;\n\nmaximize z:\n\tsum {i in 1..N} x[i]*p[i];\n\nend;\n";
const char * KP01_R="param N;\nparam p {i in 1..N};\nparam w {i in 1..N};\nparam c;\nparam K;\n\nvar x {i in 1..N} >= 0;\n\ns.t. ogr_1 { i in 1..N}:\n\tx[i] <= 1;\n\ns.t. pojemnosc:\n\tsum { i in 1..N} x[i]*w[i] <= c;\n\ns.t. liczba_elementow:\n\tsum {i in 1..N} x[i] <= K;\n\nmaximize z:\n\tsum {i in 1..N} x[i]*p[i];\n\nend;\n";

//void ZnajdzPoczatkowaLambda2();
//void WczytajDaneWejsciowe(char* filename);

//
//
#endif // MAIN_H_INCLUDED
